var n = "100.11px"
console.log(Number(n))
console.log(parseInt(n))
console.log(parseFloat(n))

//Number()简单但是不能转化带字符的返回NaN  parseInt()可以转化数字忽略掉字符串字母  parseFloat()同parseInt()  转换小数时候使用
//parseInt()有两个参数 不写默认十进制  

var num = "100"
console.log(typeof +num)

var  n = 3
console.log(n+ ""  === String(n))
console.log(typeof(n+""))
var s = "3"
console.log(+s === Number(s))
console.log(typeof(+s))

// n+""等于 String(n)   后者代码更清晰 但是前者代码更省空间效率高
// +s 等于Number(s)   与上面逻辑一样
//但是慎用!!  +s等于Number(s)  碰到无法转换的就会变成NaN 整个与运算结果变成NaN

0 ;NaN;null;undefined;"";   //会被转化为  false  其余的会被转化为true    

//转化boolean最好使用!!双重否定
//所有对象都是true  用new构造的obj 转换为boolean都是true

var obj = {} 
console.log(obj.valueOf())
obj++
console.log(obj++)